package com.yxym.tankgame2;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

@SuppressWarnings({"all"})

//坦克的活动区域
public class MyPanel extends JPanel implements KeyListener {
//为了监听键盘事件，实现KeyListener


    //定义自己的坦克
    private MyTank myTank = null;

    public static void main(String[] args) {
        YaMinTankGame02 yaMinTankGame01 = new YaMinTankGame02();
    }
    public MyPanel(){
        myTank = new MyTank(200,200);//初始化自己坦克
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.fillRect(0,0,1000,800);//填充矩形

        //画出坦克
        drawTank(myTank.getX(),myTank.getY(),g,myTank.getDirection(),0);
        //drawTank(myTank.getX() + 100,myTank.getY(),g,0,1);
    }
    //编写方法，画出坦克
    /**
     *
     * x 坦克的左上角x的坐标
     * y 坦克的左上角y的坐标
     * g 画笔
     * g direction 坦克方向(上下左右)
     * type 坦克类型
     */
    public void drawTank(int x,int y,Graphics g, int direction ,int type){
        switch (type){
            case 0:
                //自己的坦克
                g.setColor(Color.BLUE);
                break;
            case 1:
                //敌人的坦克
                g.setColor(Color.red);
                break;
        }

        //根据坦克的方向，来绘制坦克
        //direction表示方向（0：向上,1：向右,2：向左，3：向下）表示不同方向的坦克
        switch (direction){
            case 0://表示向上
                g.fill3DRect(x,y,10,60,false);//画出坦克左轮子
                g.fill3DRect(x + 40,y,10,60,false);//画出坦克右轮子
                g.fill3DRect(x + 10,y + 10,30,40,false);//画出坦克上盖子
                g.fillOval(x + 10,y + 15,30,40);//画出坦克圆帽子
                g.fill3DRect(x + 23,y - 15,5,50,false);//画出坦克炮筒
                break;
            case 1://表示向右
                g.fill3DRect(x,y,60,10,false);//画出坦克左轮子
                g.fill3DRect(x ,y + 40,60,10,false);//画出坦克右轮子
                g.fill3DRect(x + 10,y + 10,40,30,false);//画出坦克上盖子
                g.fillOval(x + 10,y + 10,40,30);//画出坦克圆帽子
                g.fill3DRect(x + 23,y + 20,50,5,false);//画出坦克炮筒
                break;
            case 2://表示向左
                g.fill3DRect(x,y,60,10,false);//画出坦克左轮子
                g.fill3DRect(x ,y + 40,60,10,false);//画出坦克右轮子
                g.fill3DRect(x + 10,y + 10,40,30,false);//画出坦克上盖子
                g.fillOval(x + 10,y + 10,40,30);//画出坦克圆帽子
                g.fill3DRect(x - 19,y + 22,50,5,false);//画出坦克炮筒
                break;
            case 3://表示向下
                g.fill3DRect(x,y,10,60,false);//画出坦克左轮子
                g.fill3DRect(x + 40,y,10,60,false);//画出坦克右轮子
                g.fill3DRect(x + 10,y + 10,30,40,false);//画出坦克上盖子
                g.fillOval(x + 10,y + 15,30,40);//画出坦克圆帽子
                g.fill3DRect(x + 23,y + 25,5,50,false);//画出坦克炮筒
                break;
            default:
                System.out.println("");
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override//按下键盘的情况
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_W){
            //KeyEvent.VK_W就是向上的箭头对应的code（java给每个建盘上的建对应一个值）
            myTank.setDirection(3);
        }else if(e.getKeyCode() == KeyEvent.VK_S){
            myTank.setDirection(0);
        }else if(e.getKeyCode() == KeyEvent.VK_A){
            myTank.setDirection(2);
        }else if (e.getKeyCode() == KeyEvent.VK_D){
            myTank.setDirection(1);
        }

        //让面板重绘制
        this.repaint();
    }

    @Override
    public void keyReleased(KeyEvent e) {

    }
}